﻿#region Using namespaces...
using System.Collections.Generic;
using TaxonomyImportLibrary.Taxonomy.Interfaces;
using System.ComponentModel;
#endregion

namespace TaxonomyImportLibrary.Taxonomy.Views
{
	/// <summary>
	/// TermSetView class
	/// </summary>
	public class TermSetView : ITermSetView
	{
		#region Properties
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Termset Information")]
		[Browsable(true)]
		[DisplayName("Name")]
		[Description("Name of the term group")]
		public string Name{ get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Termset Information")]
		[Browsable(true)]
		[DisplayName("Termset Description")]
		[Description("Description of the term group")]
		public string Description{ get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Termset Information")]
		[Browsable(true)]
		[DisplayName("Tagging Availability")]
		[Description("Flag that allows the term group to be made available for tagging")]
		public bool AvailableForTagging{ get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Termset Information")]
		[Browsable(true)]
		[DisplayName("Stakeholders Group")]
		[Description("List of stakeholders associated with the term set")]
		public List<IUserIdentityView> Stakeholders { get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Termset Information")]
		[Browsable(true)]
		[DisplayName("Contact Email")]
		[Description("Contact/Support email for the term group")]
		public string ContactEmail { get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Termset Information")]
		[Browsable(true)]
		[DisplayName("Termset Owner")]
		[Description("Owner of the termset")]
		public string Owner { get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Termset Information")]
		[Browsable(true)]
		[DisplayName("Child Terms")]
		[Description("List of child terms associated with the term set")]
		public List<ITermView> ChildTerms { get; set; }
		#endregion

		#region Constructors
		/// <summary>
		/// Default constructor
		/// </summary>
		public TermSetView()
		{
			// Initialize
			Initialize();
		}
		#endregion

		#region Utility Methods
		/// <summary>
		/// Handles class initialization
		/// </summary>
		private void Initialize()
		{
			// Set properties
			Stakeholders = new List<IUserIdentityView>();
			ChildTerms = new List<ITermView>();
			ChildTerms = new List<ITermView>();
		}
		#endregion
	}
}
